package org.liang.code.jms.queue.more;

import jakarta.jms.*;
import org.apache.activemq.artemis.api.core.Message;
import org.apache.activemq.artemis.jms.client.ActiveMQJMSConnectionFactory;
import org.liang.code.utils.jms.JMSCommons;

/**
 * 最后值队列(Last - value Queues) 对于相同的key值，只保留最新的
 */
public class LVQMain {

    public static void main(String[] args) throws JMSException {

        // 创建工厂
        ActiveMQJMSConnectionFactory factory = new ActiveMQJMSConnectionFactory(JMSCommons.CORE_URL, JMSCommons.USERNAME, JMSCommons.PASSWORD);
        // 创建JMSContext
        JMSContext context = factory.createContext(Session.AUTO_ACKNOWLEDGE);
        // 生产者
        JMSProducer producer = context.createProducer();

        // 创建消息
        TextMessage message1 = context.createTextMessage("我是奶龙!");
        message1.setStringProperty(Message.HDR_LAST_VALUE_NAME.toString(), "giao");
        // 发送消息
        producer.send(context.createQueue(JMSCommons.CORE_LVQ), message1);

        TextMessage message2 = context.createTextMessage("我才是奶龙!");
        message2.setStringProperty(Message.HDR_LAST_VALUE_NAME.toString(), "giao");

        TextMessage message3 = context.createTextMessage("我不是奶龙!");
        // 发送消息
        producer.send(context.createQueue(JMSCommons.CORE_LVQ), message1);
        producer.send(context.createQueue(JMSCommons.CORE_LVQ), message2);
        producer.send(context.createQueue(JMSCommons.CORE_LVQ), message3);

        // 只保留了message2和message3
        // 关闭资源
        context.close();
        factory.close();
    }
}
